﻿Public Class FrmRubro
    Dim dao As New DAOGeneral
    Dim operacion As accion 'estado de la operacion en curso
    Dim ventanaPadre As Form
    Dim vengoDesdeMenuPrincipal As Boolean 'variable q me dice si vengo desde un form o desde el menu ppal
    Dim id_rubro As Integer

    Enum accion 'tipificacion de estado de la operacion en curso
        insertar
        modificar
    End Enum

    Public Sub New(ByRef ventana As Form)
        InitializeComponent()
        Me.ventanaPadre = ventana
        Me.ventanaPadre.Enabled = False
        vengoDesdeMenuPrincipal = False
        txt_nombre.Focus()
    End Sub

    Public Sub New()
        InitializeComponent()
        vengoDesdeMenuPrincipal = True
    End Sub

    Private Sub cargarGrilla()
        Dim tabla As New Data.DataTable
        tabla = dao.cargarTablaRubro()
        Me.grid_rubros.DataSource = tabla
        grid_rubros.AutoResizeColumns() 'define automaticamente el ancho de las columnas de la grilla conforme al contenido
    End Sub

    Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        If vengoDesdeMenuPrincipal = True Then 'si vengo desde el menu ppal solo cierro la ventana
            Me.Dispose()
        Else 'si vengo de un form distinto al ppal
            Me.Dispose()  'cierra el formulario
            ventanaPadre.Enabled = True 'Habilita el form principal
            ventanaPadre.Focus()        'y le hace foco
        End If
    End Sub

    Private Sub FrmRubro_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        txt_nombre.Focus()
        cargarGrilla()
        operacion = accion.insertar
    End Sub

    Private Sub FrmRubro_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If vengoDesdeMenuPrincipal = True Then 'si vengo desde el menu ppal solo cierro la ventana
            Me.Dispose()
        Else 'si vengo de un form distinto al ppal
            Me.Dispose()  'cierra el formulario
            ventanaPadre.Enabled = True 'Habilita el form principal
            ventanaPadre.Focus()        'y le hace foco
        End If
    End Sub

    Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        If MessageBox.Show("¿Está seguro que desea Eliminar " & Me.grid_rubros.CurrentRow.Cells(1).Value & "?", "Eliminar Localidad", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

            If dao.EliminarRubro(Me.grid_rubros.CurrentRow.Cells(0).Value) = True Then 'utiliza el metodo borrar pasando el comando correspondiente con valores de id de la fila seleccionada  
                Me.lbl_texto.ForeColor = Color.Blue
                Me.lbl_texto.Text = "Rubo eliminado con éxito."    'muestra un mensaje al usuario
                Me.txt_descripcion.Text = ""    'setea en blanco el campo
                txt_nombre.Text = ""
                txt_nombre.Focus()
                cargarGrilla()   'actualiza la visualizacion de la tabla con los nuevos valores modificados
            Else
                Me.lbl_texto.ForeColor = Color.Red
                Me.lbl_texto.Text = "El rubro no pudo ser eliminado"    'muestra un mensaje al usuario
                Me.txt_descripcion.Text = ""    'setea en blanco el campo
                txt_nombre.Text = ""
                txt_nombre.Focus()
            End If
        End If
    End Sub



    Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        If Me.txt_nombre.Text = "" Then  'valida el campo descripcion
            Me.lbl_texto.ForeColor = Color.Red
            Me.lbl_texto.Text = "¡debe ingresar un nombre al rubro!"
            Me.txt_descripcion.Focus()
            Exit Sub
        End If

        If Me.operacion = accion.insertar Then  'si la operacion en curso es insertar:
            If dao.GuardarRubros(txt_nombre.Text, Me.txt_descripcion.Text) = True Then
                Me.lbl_texto.ForeColor = Color.Blue
                Me.lbl_texto.Text = "Rubro guardado con éxito." 'muestra un mensaje al usuario
            Else
                Me.lbl_texto.ForeColor = Color.Blue
                Me.lbl_texto.Text = "El rubro no se pudo guardar" 'muestra un mensaje al usuario
            End If
        End If


        If Me.operacion = accion.modificar Then 'si la operacion es modificar:
            If dao.ActualizarRubro(id_rubro, Me.txt_nombre.Text, txt_descripcion.Text) = True Then 'si se modifico correctamente
                Me.lbl_texto.ForeColor = Color.Blue
                Me.lbl_texto.Text = "Rubro modificado con éxito."   'muestra un mensaje al usuario

            Else
                Me.lbl_texto.ForeColor = Color.Blue
                Me.lbl_texto.Text = "El rubro no pudo ser modificado"   'muestra un mensaje al usuario
            End If

        End If

        Me.txt_descripcion.Text = ""    'setea en blanco el campo
        txt_nombre.Focus() 'vuelvo el foco al txt
        txt_nombre.Text = ""
        cargarGrilla()   'actualiza la visualizacion de la tabla con los nuevos valores modificados

    End Sub

    Private Sub txt_nombre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_nombre.TextChanged
        grid_rubros.DataSource = dao.buscarRubroXNombre(txt_nombre.Text) 'voy filtrando en la grilla a medida que inserta el nombre
        lbl_texto.Text = ""
        If grid_rubros.Rows.Count = 0 Then
            btnGuardar.Enabled = True
            operacion = accion.insertar
        Else
            btnGuardar.Enabled = False
            operacion = accion.modificar
        End If
    End Sub

    Private Sub grid_rubros_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grid_rubros.CellDoubleClick
        Me.operacion = accion.modificar
        Me.txt_nombre.Focus()
        Me.txt_nombre.Text = Me.grid_rubros.CurrentRow.Cells(1).Value 'muestra el contenido del campo a modificar

        txt_descripcion.Text = grid_rubros.CurrentRow.Cells(2).Value.ToString 'muestra el contenido del campo a modificar
        id_rubro = Integer.Parse(grid_rubros.CurrentRow.Cells(0).Value.ToString())
    End Sub

    Private Sub txt_descripcion_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_descripcion.TextChanged
        operacion = accion.modificar
        btnGuardar.Enabled = True
    End Sub
End Class